package simple.nmea;


import java.util.Date;

import simple.enums.GpsQuality;
import simple.enums.NMEA;


public class GGA {
	private NMEA type = NMEA.GGA;
	private Date utc;
	private Longitude longitude;
	private Latitude latitude;
	private GpsQuality gpsQuality;
	private int numberOfSatelitesInUse; // not those in view
	private HorizontalDilutionOfPrecision hdop;
	private double altitude;
	private double geoidalSeparation;
	private double secSinceDgpsUpdate;
	private int dgpsReferenceStationId;
	
	
	public GGA(NMEA type, Date utc, Longitude longitude, Latitude latitude,
			GpsQuality gpsQuality, int numberOfSatelitesInUse,
			HorizontalDilutionOfPrecision hdop, double altitude,
			double geoidalSeparation, double secSinceDgpsUpdate,
			int dgpsReferenceStationId) {
		super();
		this.type = type;
		this.utc = utc;
		this.longitude = longitude;
		this.latitude = latitude;
		this.gpsQuality = gpsQuality;
		this.numberOfSatelitesInUse = numberOfSatelitesInUse;
		this.hdop = hdop;
		this.altitude = altitude;
		this.geoidalSeparation = geoidalSeparation;
		this.secSinceDgpsUpdate = secSinceDgpsUpdate;
		this.dgpsReferenceStationId = dgpsReferenceStationId;
	}


	public NMEA getType() {
		return type;
	}


	public Date getUtc() {
		return utc;
	}


	public Longitude getLongitude() {
		return longitude;
	}


	public Latitude getLatitude() {
		return latitude;
	}


	public GpsQuality getGpsQuality() {
		return gpsQuality;
	}


	public int getNumberOfSatelitesInUse() {
		return numberOfSatelitesInUse;
	}


	public HorizontalDilutionOfPrecision getHdop() {
		return hdop;
	}


	public double getAltitude() {
		return altitude;
	}


	public double getGeoidalSeparation() {
		return geoidalSeparation;
	}


	public double getSecSinceDgpsUpdate() {
		return secSinceDgpsUpdate;
	}


	public int getDgpsReferenceStationId() {
		return dgpsReferenceStationId;
	}
	
	
}

/*
eg3. $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
1    = UTC of Position
2    = Latitude
3    = N or S
4    = Longitude
5    = E or W
6    = GPS quality indicator (0=invalid; 1=GPS fix; 2=Diff. GPS fix)
7    = Number of satellites in use [not those in view]
8    = Horizontal dilution of position
9    = Antenna altitude above/below mean sea level (geoid)
10   = Meters  (Antenna height unit)
11   = Geoidal separation (Diff. between WGS-84 earth ellipsoid and
       mean sea level.  -=geoid is below WGS-84 ellipsoid)
12   = Meters  (Units of geoidal separation)
13   = Age in seconds since last update from diff. reference station
14   = Diff. reference station ID#
15   = Checksum
 */
